# -*- coding:utf-8 -*-
"""
@Author : 审心
@Time : 2023/4/24 14:44
"""
import functools

from common.logger.log import log_
from common.utils.MethodUtil import get_func_params_to_dict


def exception_log_param(func):
    """
    被该装饰器修饰的方法出现异常时输出方法参数
    注意: 当修饰类中方法打印 self 参数时若需要输出对象参数请重写此类的 __str__
    :param func:
    :return:
    """

    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except Exception as e:
            log_.error(f"方法 {func.__name__} 执行出现异常，参数为：{get_func_params_to_dict(func, args, kwargs)}")
            raise e

    return wrapper
